草庐IT

C++ 多重虚拟继承与 COM

全部标签

.net - 无法使用 Windows 7 或 Windows Server 2008 64 位从 COM+ 目录导出 32 位 ServicedComponent

使用Windows2003Server或2000,生成一个COM+应用程序代理以在另一个系统上使用,包括在导出过程中创建的MSI包中的.NETEnterpriseServices组件。.NET组件也在GAC中注册,并且regsvcs在安装应用程序代理期间自动运行。但是,我们发现WindowsServer2008不包含该程序集。它将包括.tlb但不包括.dll,也不将其安装在GAC中,当然,当应用程序找不到程序集时一切都会崩溃。有人知道如何确保该行为像2000-2003年那样有效吗?更新我们可以仅使用.NET程序集生成代理,它工作正常,但如果我们尝试将其他程序集或遗留VB6COM+dll

c++ - DllMain 在注册 COM dll 时卡住

我尝试注册一个名为MixCenter.dll的COMdll。我已经找到了它所依赖的所有dll。当执行官第一次使用它的DllMain时,它会卡住并且永远不会返回。这似乎是一个死锁,但我没有调用任何LoadLibrary,它也永远不会执行到DllMain。这种情况还有其他原因吗?这就是DllMain的样子:BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:g_hinstDLL=hModule

c++ - 在不同项目(没有编译时链接)中使用的 header 中声明的纯抽象 C++ 类是否共享相同的虚拟表模型?

我有一个C++头文件声明了一个仅由纯虚方法组成的类。我有两个使用该header的DLL(其中一个实现该接口(interface))但在编译时未链接。一个DLL正在动态加载另一个,将已实现接口(interface)的指针传递给另一个。这些DLL是否共享相同的虚拟表结构? 最佳答案 当然,类头足以构建完整的类(这里说的是内存中的布局,一切都是如何定位的,而不是里面的实际数据),包括精确的虚拟表结构。想一想,每个链接对象(您的.cpp文件)都是单独编译的,只有头文件是共同的,但在编译时,编译器必须知道虚拟表的精确结构才能正确路由虚拟调用。

windows - 继承 Windows ThreadHandle

我刚刚意识到,如果您知道正确的ThreadHandle值,则不可能在其自己的应用程序(地址空间?!)之外挂起/恢复/终止线程...据我所知,您不会也可以使用WaitForSingleObject。但是我看到ProcessExplorer能够暂停/恢复/终止每个进程的每个线程。所以我想知道是否有一种方法可以从不同的进程继承ThreadHandle。 最佳答案 如果你能得到发起进程的句柄,你可以使用DuplicateHandle()为您有权访问的该进程中的任何内核对象创建句柄。 关于wind

windows - 在 Delphi 中使用 COM 支持在 DLL 和 .EXE 之间切换

我有以下情况:我有一个delphi应用程序{$APPTYPEGUI}。(APP1)如果APP1启动,它会运行代码begin和end.,就像它应该的那样。稍后,APP1将被转换为DLL(另一个应用程序将执行此操作-APP2)。APP2添加IMAGE_FILE_DLL标志到NTFileHeader中的CharacteristicsAPP1。然后APP2尝试使用LoadLibrary加载DLL(APP1)(或加载dll的其他一些COM命令)但它返回错误:WindowsencounteredaninternalerrorwhileinitializingCOMlibraries.我已经用C项目

连接到本地虚拟机

我怀疑这有一个我忽略的简单解决方案,可能与客户端或它的设置方式有关。无论如何,我正在尝试设置一个简单的Echo服务器/客户端来了解套接字编程的基础知识。我有一台运行LinuxMint的虚拟机,主机运行的是Windows10。我设置的虚拟机运行服务器c代码,而Windows将运行客户端。我开始编写服务器代码//EchoServerforUNIX:UsingsocketprogramminginC,aclientsendsastring//tothisserver,andtheserverrespondswiththesamestringsentbacktotheclient#includ

windows - 如何为非方法工作创建继承的 AUTOLOAD?

packageMy::Win32::Console;usewarnings;usestrict;useparentqw(Win32::Console);subnew{my($class,$param1,$param2)=@_;my$self={};if(defined($param1)and($param1==constant("STD_INPUT_HANDLE",0)or$param1==constant("STD_OUTPUT_HANDLE",0)or$param1==constant("STD_ERROR_HANDLE",0))){$self->{'handle'}=_GetSt

c++ - 如何在运行时加载 COM DLL

我有一个VB6COMDLL。我想从C++中使用它。我知道如何注册它,从DLL生成一个tlb文件,并在C++中#import它。但是,我希望在运行时动态地加载和使用这样的DLL,而无需提前知道它们。这可能吗?谢谢, 最佳答案 是的,但你需要把问题弄清楚。有时,您确实预先知道COM接口(interface),只是不知道实现。在这种情况下,您可以创建接口(interface)的虚拟实现并#import那个。在运行时,您仍然会注册真正的组件,从中获取对象(可能通过CoCreateInstance)并将其存储在适当的智能指针中。在VB6中,它

c++ - Windows中是否有任何内存虚拟文件API?

我有一个模块通过它的路径加载一个文件,但是我发现它很慢。我想加速它,Windows有没有什么技术可以为模块创建虚拟内存文件?非常感谢 最佳答案 我测试了BoxedAppSDK.它很棒,但它不是免费的:) 关于c++-Windows中是否有任何内存虚拟文件API?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4273328/

未找到 PHP 类 'COM'

我正在运行WindowsServer200832位、PHP5.4.5和Apache2.2.22。我很确定COM是内置于PHP核心的,但是当我运行代码来调用一个新的COM对象时,我得到一个“找不到类‘COM’”的错误。我调用的COM对象是MicrosoftWord,已安装。代码:$word=newCOM("word.application")ordie("CouldnotinitiateWordCOMObject.");PHP只是吐出上述错误。 最佳答案 来自用户对PHPwebsite的评论:FromPHP5.4.5,COMandDO